繼上次的LCEL教學後,有沒有對LangChain更上手了呢!
接下來要教學的是如何讓LLM可以記得先前的對話紀錄&如何將記錄存到DataBase中
這邊我將以MongoDB作為我們儲存的資料庫,至於為何會選用MongoDB呢
這邊就讓我留到後面再來做說明哦!
想要建立一個可以持續聊天的chatbot,就必須要讓他能夠記得先前的對話
這邊先來帶個傳統的例子
from langchain_openai import AzureChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from dotenv import load_dotenv
import os
load_dotenv()
chat_model = AzureChatOpenAI(
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
azure_deployment="gpt-4o",
openai_api_version="2023-03-15-preview",
)
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
str_parser = StrOutputParser()
test_prompt = ChatPromptTemplate.from_messages(
[
("system","你會回答所有問題, 而且能記得每個問答"),
("human","{input}"),
])
test_chain = test_prompt | chat_model | str_parser
while True:
question = input("請輸入問題:")
if not question.strip():
break
response = test_chain.invoke({"input":question})
print('question:',question)
print('response:',response)
question: 我叫小明
response: 你好,小明!很高興認識你。今天有什麼我可以幫你解決的問題嗎?
question: 我叫甚麼名字?
response: 你還沒告訴我你的名字。請問你叫甚麼名字呢?
那我們要如何讓LLM記得先前聊天紀錄呢?
就是要依靠我們的memory囉!